#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <math.h>
int arr[1024][1024] = { 0 };
int main()
{
	void yzc(int c, int y, int z);
	int n;
	scanf("%d", &n);
	double z = pow(2, n);
	for (int i = 0; i < z; i++)
		for (int j = 0; j < z; j++)
			arr[i][j] = 1;
	yzc(z, 0, 0);

	for (int i = 0; i < z; i++)
	{
		for (int j = 0; j < z; j++)
		{
			printf("%d ", arr[j][i]);
		}
		printf("\n");
	}
	return 0;
}
void yzc(int c, int y, int z)
{
	for (int i = y; i < y + c / 2; i++)
	{
		for (int j = z; j < z + c / 2; j++)
		{
			arr[i][j] = 0;
		}
	}
	if (c == 1)
		return;
	yzc(c / 2, y + c / 2, z);
	yzc(c / 2, y, z + c / 2);
	yzc(c / 2, y + c / 2, z + c / 2);
}